Here we outline a workflow with algorithmic support in R for comparing our conceptual model to the existing literature corpus, the government policy documents and a qualitative assessment. We apply these findings to systematically evaluate whether each component of our conceptual model is supported, refuted, missing from the literature and/or policy documents. We then synthesize this into a justified and adjusted version of the model.

We build a semi-automated evidence synthesis framework that treats our documents like a team of virtual reviewers. The core idea is to define the core elements from our simple conceptual model (e.g. canteen regulation, staff training, food safety, nutrition education, etc.), search and summarize what each document says about each element, score the strength and direction of evidence per element, compare and synthesize to get a high-level view of agreement, gaps, and inconsistencies.

Decision framing

As a first step we framed the decision of implementing school meal policy. We determined our general understanding of the decision problem in the form of a simple causal model representing the important costs benefits and risks that policy will have at the school level.

Full conceptual Model Figure 1. Conceptual model of school nutrition policy impacts. The diagram illustrates key variables influencing student health and learning outcomes in the context of school meal interventions. Variables are color-coded by type: management actions (blue) represent components that can be directly modified by policy (e.g. canteen change, nutrition lessons); costs (brown) reflect resource needs for implementation; risks (pink) represent contextual or behavioral barriers such as off-campus consumption or food culture and advertising; and benefits (green) are the desired outcomes, including on-campus consumption, student health, and student learning. Arrows indicate hypothesized causal relationships, with thicker arrows denoting stronger influence.

Literure and policy review

We performed a review of policy and literature documents and saved the text of the reviews together with the bib files of both the literature and policy review.

# Load .txt files
literature_text <- tolower(readLines("text_Review/Text_Lit_Review.txt"))

policy_text <- tolower(readLines("text_Review/Text_Policy_Review_Eng.txt"))

bib_policy <- read.bib("bib/school_meal_policy.bib")

bib_texts_policy <- tolower(sapply(bib_policy, function(x) {
  paste(
    x$title,
    x$abstract,
    if (!is.null(x$annote)) paste(x$annote, collapse = " ") else "",
    collapse = " "
  )
}))

# Load BibTeX literature entries as plain text
bib_literature <- read.bib("bib/school_meal_literature.bib")

# Load BibTeX literature entries as plain text
bib_texts_literature <- tolower(sapply(bib_literature, function(x) {
  paste(
    x$title,
    x$abstract,
    if (!is.null(x$annote)) paste(x$annote, collapse = " ") else "",
    collapse = " "
  )
}))

Algorithmic support

To compare our conceptual model to the existing literature, the government policy documents and our qualitative assessment we search the corpus of each for key terms.

food_tech_training

Infrastructure, equipment, and capacity-building components needed for food preparation and delivery in schools.

food_tech_training = c(
  "kitchen equipment", "cooking equipment", "commercial kitchen", 
  "school meal preparation", "technical food support", 
  "canteen operations", "food service logistics", 
  "kitchen operations", "meal service infrastructure", 
  "food production capacity", "food storage infrastructure", 
  "kitchen staff training", "food preparation training", 
  "school catering system", "school meal delivery", 
  "bulk cooking systems", "school kitchen upgrade", 
  "food handling facility", "school feeding infrastructure", "trained and educated on proper nutrition"
)

teaching_resources

Time, personnel, and instructional capacity needed for teachers and staff to implement nutrition interventions.

teaching_resources = c(
  "teaching workload", "teacher time", "instructional time", 
  "curricular demands", "lesson planning constraints", 
  "staffing capacity", "teacher availability", 
  "instructional burden", "curriculum overcrowding", 
  "limited teaching time", "staffing shortage", 
  "time allocation", "teaching schedule", 
  "instructional capacity", "non-teaching responsibilities", 
  "classroom time pressure", "teacher deployment", 
  "resource constraints for instruction"
)

staff_skill

The pedagogical and technical competencies of school staff related to nutrition, health, and food safety.

staff_skill = c(
  "staff nutrition knowledge", "teacher nutrition competency", 
  "school health educators", "teacher skills", 
  "staff training", "training effectiveness", 
  "professional development for teachers", 
  "teacher capacity building", "staff development programs", 
  "food literacy training", "capacity development", 
  "in-service training", "teacher competence", 
  "educator readiness", "pedagogical support for nutrition", 
  "staff preparation", "training coverage", 
  "staff instructional skills", "training quality", 
  "nutrition educator training"
)

intervention_cost

Economic factors influencing the feasibility, sustainability, and scalability of school-based nutrition interventions, including direct costs and systemic financial constraints.

intervention_cost = c(
  "intervention cost", "program cost", "implementation cost", 
  "financial feasibility", "budget constraint", "school finance", 
  "economic barrier", "affordability", "funding shortfall", 
  "resource allocation", "cost-effectiveness", "cost-benefit", 
  "financial sustainability", "school budget", "budget limitation", 
  "fiscal capacity", "operational cost", "nutrition program funding", 
  "financial barrier", "economic feasibility", "budget planning", 
  "cost per child", "nutrition intervention expenses"
)

canteen_change

Policy-driven or structural reforms to the school food environment, particularly within canteen services, aimed at improving food quality, nutritional adequacy, and student access to healthy meals.

canteen_change = c(
  "canteen reform", "school meal change", "menu revision", 
  "canteen intervention", "food service reform", 
  "school food environment", "healthy food provision", 
  "nutrition-sensitive canteen", "school food policy", 
  "canteen nutrition standards", "meal plan reform", 
  "food service update", "school food regulation", 
  "canteen policy enforcement", "nutritional canteen shift", 
  "menu redesign", "food procurement reform", 
  "canteen-based intervention", "school food service management"
)

nutrition_lessons

Educational initiatives and curricular strategies that provide students with knowledge, skills, and attitudes related to nutrition, diet, and healthy lifestyle practices.

nutrition_lessons = c(
  "nutrition education", "health class", "food literacy lessons", 
  "nutrition curriculum", "classroom food education", 
  "school-based nutrition instruction", "dietary education", 
  "nutrition teaching materials", "health promotion teaching", 
  "lesson on healthy eating", "curriculum-integrated nutrition", 
  "food education", "nutrition behavior curriculum", 
  "classroom nutrition program", "healthy eating curriculum", 
  "nutrition awareness education", "school nutrition module", 
  "teacher-led nutrition instruction", "classroom wellness lesson"
)

food_ads

Advertising and commercial promotion of unhealthy foods in the school environment or within children’s media ecosystems that influence eating behaviors and preferences.

food_ads = c(
  "food marketing", "junk food advertising", "unhealthy food ads", 
  "child-targeted food marketing", "ads near school", 
  "commercial food promotion", "branded snack promotion", 
  "advertising to children", "point of sale marketing", 
  "school food advertising", "child-directed advertising", 
  "food and beverage marketing", "media food influence", 
  "food advertisements", "billboard marketing", 
  "TV food commercials", "digital food marketing", 
  "sugar-sweetened beverage marketing", "fast food advertising", 
  "packaging marketing to kids"
)

off_campus

The external food environment accessible to students outside of school grounds, including vendors, markets, and informal sources that often provide low-nutrient, energy-dense foods.

off_campus = c(
  "off-campus eating", "external food", "street food vendors", 
  "gate food", "junk food near school", "mobile food vendors", 
  "non-canteen food", "external food purchases", 
  "school gate vendors", "food from outside school", 
  "unregulated food sales", "open food access", 
  "snack carts near school", "neighborhood food environment", 
  "informal food sources", "out-of-school food access", 
  "off-premises food", "community vendors near school", "outside venue"
)

on_campus

Food consumption and dietary behaviors that occur within school premises, including those influenced by school meals, canteen offerings, and in-school food policies.

on_campus = c(
  "school food consumption", "on-site meal intake", 
  "canteen food intake", "in-school dietary habits", 
  "school-based eating", "healthy eating in school", 
  "school meal participation", "in-school food intake", 
  "on-campus nutrition", "eating during school hours", 
  "classroom snack practices", "canteen-based eating", 
  "student food behavior in school", "regulated food intake", 
  "school food environment behavior", "food consumption at school"
)

student_learning

Academic and cognitive outcomes linked to nutrition and school health environments, including concentration, performance, and educational attainment.

student_learning = c(
  "learning outcomes", "academic performance", "school achievement", 
  "cognitive benefit", "cognitive development", "classroom concentration", 
  "student attention span", "education impact", 
  "student knowledge gain", "test scores", 
  "reading comprehension", "numeracy outcomes", 
  "academic success", "educational attainment", 
  "classroom engagement", "learning readiness", 
  "mental focus", "academic participation", 
  "nutrition and learning", "school-based academic improvement", 
  "academic perfomance", "school perfomance", "student perfomance"
)

student_health

Physical health outcomes affected by school food environments, including growth, weight status, illness prevalence, and long-term well-being.

student_health = c(
  "child health", "student well-being", "healthy weight", 
  "BMI improvement", "nutritional status", 
  "diet-related health", "physical development", 
  "illness reduction", "health outcome", "childhood obesity", 
  "malnutrition", "nutrition-related disease", 
  "student physical health", "diet quality outcome", 
  "chronic disease prevention", "health behavior", 
  "public health outcome", "body mass index", 
  "school nutrition outcomes", "growth monitoring"
)
search_terms <- list(
  food_tech_training = food_tech_training,
  teaching_resources = teaching_resources,
  staff_skill = staff_skill,
  intervention_cost = intervention_cost,
  canteen_change = canteen_change,
  nutrition_lessons = nutrition_lessons,
  food_ads = food_ads,
  off_campus = off_campus,
  on_campus = on_campus,
  student_learning = student_learning,
  student_health = student_health
)

Compare model and reviews

We created a comparison matrix to compare results of the literature and policy review and check whether we can consider them to provide either “Strong”, “Moderate”, “Weak”, or no evidence for our model.

check_hits <- function(search_terms, text) {
  any(sapply(search_terms, function(t) grepl(t, text, ignore.case = TRUE)))
}

comparison_matrix <- data.frame(
  bib_data_policy = sapply(search_terms, check_hits, text = paste(bib_texts_policy, collapse = " ")),
  bib_data_lit = sapply(search_terms, check_hits, text = paste(bib_texts_literature, collapse = " ")),
  gov_review = sapply(search_terms, check_hits, text = paste(policy_text, collapse = " ")),
  lit_review = sapply(search_terms, check_hits, text = paste(literature_text, collapse = " "))
)

# Add numeric sum and evidence strength labels
comparison_matrix$support_score <- rowSums(comparison_matrix[ , c("bib_data_policy", "gov_review", "bib_data_lit", "lit_review")])

comparison_matrix$evidence_strength <- cut(
  comparison_matrix$support_score,
  breaks = c(-1, 0.1, 1.3, 3.1, 4.1),
  labels = c("", "Weak", "Moderate", "Strong"),
  right = TRUE
)

# Clean row names
rownames(comparison_matrix) <- gsub("_", " ", rownames(comparison_matrix))
rownames(comparison_matrix) <- stringr::str_to_title(rownames(comparison_matrix))

# Clean column names
colnames(comparison_matrix) <- gsub("_", " ", colnames(comparison_matrix))
colnames(comparison_matrix) <- stringr::str_to_title(colnames(comparison_matrix))


knitr::kable(
  comparison_matrix[, !(names(comparison_matrix) %in% "Support Score")],
  caption = "Model Component Evidence Presence"
)
Model Component Evidence Presence
Bib Data Policy Bib Data Lit Gov Review Lit Review Evidence Strength
Food Tech Training TRUE FALSE FALSE FALSE Weak
Teaching Resources FALSE TRUE FALSE FALSE Weak
Staff Skill FALSE TRUE FALSE FALSE Weak
Intervention Cost FALSE TRUE FALSE TRUE Moderate
Canteen Change FALSE TRUE FALSE TRUE Moderate
Nutrition Lessons TRUE TRUE FALSE TRUE Moderate
Food Ads FALSE TRUE FALSE FALSE Weak
Off Campus FALSE FALSE FALSE FALSE
On Campus FALSE FALSE FALSE FALSE
Student Learning TRUE TRUE FALSE TRUE Moderate
Student Health TRUE TRUE TRUE TRUE Strong

Count citations

source("functions/get_hits_by_bib.R")
literature_hits <- get_hits_by_bib(search_terms, bib_texts_literature)

policy_hits <- get_hits_by_bib(search_terms, bib_texts_policy)

summary_hits <- data.frame(
  Literature_Count = sapply(literature_hits, length),
  Policy_Count = sapply(policy_hits, length)
)

Policy support for our model

In policy documents we found mixed support for the variables we expressed in our model:

  • 1 referencing food tech training.
    Minister (2019)

  • 0 referencing teaching resources.

  • 0 referencing staff skill.

  • 0 referencing intervention cost.

  • 0 referencing canteen change.

  • 4 referencing nutrition lessons.
    Education and Training (2022a), Minister (2021), Minister (2022), Minister (2016)

  • 0 referencing food ads.

  • 0 referencing off-campus food.

  • 0 referencing on-campus food.

  • 1 referencing student learning.
    Assembly (2019)

  • 5 referencing student health.
    Minister (2022), Education and Training (2022b), Minister (2016), Minister (2019), Health (2019)

Literature support for our model

In the literature we found supporting evidence for the variables we expressed in our model:

  • 0 referencing food tech training.

  • 1 referencing teaching resources.
    Wu et al. (2015)

  • 1 referencing staff skill.
    Ouda et al. (2019)

  • 1 referencing intervention cost.
    Parnham et al. (2022)

  • 6 referencing canteen change.
    Wu et al. (2015), Grigsby-Duffy et al. (2022), S. Pongutta et al. (2023), S. Pongutta et al. (2022), Castellari and Berning (2016), Martinelli et al. (2023)

  • 11 referencing nutrition lessons.
    Steyn et al. (2015), S. Pongutta et al. (2023), Taylor et al. (2011), S. Pongutta et al. (2022), Aroesty et al. (2018), Trung Le (2012), Hockamp et al. (2024), Liou et al. (2015), Walton, Signal, and Thomson (2013), Ohri-Vachaspati et al. (2016), Woo (2015)

  • 1 referencing food ads.
    Walton, Signal, and Thomson (2013)

  • 0 referencing off-campus food.

  • 0 referencing on-campus food.

  • 2 referencing student learning.
    Ouda et al. (2019), Aroesty et al. (2018)

  • 10 referencing student health.
    Wu et al. (2015), Parnham et al. (2022), S. Pongutta et al. (2023), Taylor et al. (2011), S. Pongutta et al. (2022), Aroesty et al. (2018), Trung Le (2012), Liou et al. (2015), Walton, Signal, and Thomson (2013), Martinelli et al. (2023)

Model update and Monte Carlo Simulation

We took all these findings into account and also talked to experts to update the model.

Full conceptual Model We ran the full model using Monte Carlo simulation to estimate the likely outcomes of different school nutrition policy configurations. All uncertain inputs were defined using probability distributions (e.g. truncated normal, beta, or uniform). Policy toggles, such as staff training and canteen monitoring, were included as binary variables with a 50% probability to simulate diverse configurations. This allowed exploration of combined and independent effects of policy elements.

Key Input Assumptions

All model inputs were modeled probabilistically based on expert judgment and literature estimates. See the input file inputs_school_policy.csv for full details.

The outputs include both health cost savings (e.g. avoided diagnoses and treatments) and economic return (net present value compared to the baseline). These are plotted below to visualize the decision space.

The three outcomes tracked were, Economic Return (Net Present Value of policy vs. no policy), Health Cost Savings (avoided treatment and diagnosis costs), Cost per Student (total implementation cost per student).

source("functions/school_policy_function.R")
# Load inputs and run simulation
input_data <- estimate_read_csv("data/inputs_school_policy.csv")

numberOfModelRuns <- 10000

set.seed(84)
simulation_result <- mcSimulation(
  estimate = input_data,
  model_function = school_policy_function,
  numberOfModelRuns = numberOfModelRuns,
  functionSyntax = "plainNames"
)

We used a Monte Carlo simulation to estimate the economic and health outcomes of school meal policy interventions under uncertainty. We ran the model 10^{4} times to capture uncertainty across a wide range of possible scenarios. The results show that school policy interventions can offer both cost savings and improved student health. The model includes toggle variables to simulate the presence or absence of specific interventions, allowing us to identify which combinations of actions appear in the most efficient scenarios.

Pareto analysis

The Pareto front includes simulations that are not outperformed in all objectives by any other scenario. These are the most efficient configurations—improvements in one outcome would require trade-offs in others.

We then performed a multi-objective Pareto analysis across three dimensions: economic return (NPV), health cost savings, and cost per student.

The resulting Pareto front reveals a clear trade-off curve. Policy configurations that maximize economic return do not necessarily maximize health benefits or minimize per-student costs. Conversely, policies with strong health outcomes can come at higher per-student costs or lower net present values.

These findings highlight the existence of efficient policy options that cannot be improved in one objective without sacrificing another. Decision-makers can use this front to choose policies based on priorities — e.g., maximizing health benefits under a fixed cost constraint, or seeking the best ROI with acceptable health impacts.

sim_data <- data.frame(simulation_result$x, simulation_result$y[1:3])  # Extract all output values

# Extended Pareto filter for 3D (non-dominated solutions across 3 objectives)
pareto_filter_3d <- function(df, obj1, obj2, obj3) {
  pareto <- rep(TRUE, nrow(df))
  for (i in 1:nrow(df)) {
    pareto[i] <- !any(
      df[[obj1]] > df[[obj1]][i] &
      df[[obj2]] >= df[[obj2]][i] &
      df[[obj3]] >= df[[obj3]][i] |
      df[[obj1]] >= df[[obj1]][i] &
      df[[obj2]] > df[[obj2]][i] &
      df[[obj3]] >= df[[obj3]][i] |
      df[[obj1]] >= df[[obj1]][i] &
      df[[obj2]] >= df[[obj2]][i] &
      df[[obj3]] > df[[obj3]][i]
    )
  }
  return(df[pareto, ])
}

# Prepare full data 
# costs per student are calculated as a minimization of the costs per student cost_per_student <- 1-(sum(policy_cost) / n_student)
sim_data <- data.frame(simulation_result$x, simulation_result$y[, c("decision_value", "health_cost_savings", "cost_per_student")])

# Get Pareto front
pareto_3d <- pareto_filter_3d(sim_data, "decision_value", "health_cost_savings", "cost_per_student")

# Combine flag to indicate Pareto-optimal points
sim_data$on_pareto <- apply(sim_data[, c("decision_value", "health_cost_savings", "cost_per_student")], 1, function(pt) {
  any(apply(pareto_3d[, c("decision_value", "health_cost_savings", "cost_per_student")], 1, function(pf) all(pt == pf)))
})

# Summarize means of input variables
input_vars <- setdiff(colnames(simulation_result$x), c("decision_value", "health_cost_savings", "cost_per_student"))

Plot Pareto optimal

# Add Pareto label
sim_data$Pareto <- ifelse(sim_data$on_pareto, "Pareto", "Other")

# Create long format for all 3 outcomes
pairwise_data <- bind_rows(
  sim_data %>% select(x = decision_value, y = health_cost_savings, Pareto) %>% mutate(Pair = "NPV vs Health"),
  sim_data %>% select(x = decision_value, y = cost_per_student, Pareto) %>% mutate(Pair = "NPV vs Cost/Student"),
  sim_data %>% select(x = health_cost_savings, y = cost_per_student, Pareto) %>% mutate(Pair = "Health vs Cost/Student")
)


# Rename columns for readability
plot_data <- sim_data %>%
  dplyr::rename(
    Economic = decision_value,
    Health = health_cost_savings,
    CostPerStudent = cost_per_student
  )

# Define color palette
pareto_colors <- c("Other" = "gray", "Pareto" = "red")

# Individual plots
p1 <- ggplot(plot_data, aes(x = Economic, y = Health, color = Pareto)) +
  geom_point(size = 1.5, alpha = 0.6) +
  scale_color_manual(values = pareto_colors) +
  labs(x = "NPV (million VND)", y = "Health savings (million VND)") +
  theme_minimal(base_size = 12) +
    theme(
    legend.position = "none",
    axis.text.x = element_blank(),
    axis.ticks.x = element_blank(),
    axis.title.x = element_blank()
  )

p2 <- ggplot(plot_data, aes(x = Economic, y = CostPerStudent, color = Pareto)) +
  geom_point(size = 1.5, alpha = 0.6) +
  scale_color_manual(values = pareto_colors) +
  labs(x = "NPV (million VND)", y = "Cost per Student (million VND)") +
  theme_minimal(base_size = 12) +
  theme(legend.position = "none")

p3 <- ggplot(plot_data, aes(x = Health, y = CostPerStudent, color = Pareto)) +
  geom_point(size = 1.5, alpha = 0.6) +
  scale_color_manual(values = pareto_colors) +
  labs(x = "Health savings (million VND)", y = "Cost per Student (million VND)") +
  theme_minimal(base_size = 12) +
  theme(
    legend.position = "none",
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank(),
    axis.title.y = element_blank()
  )

# Shared legend
legend <- cowplot::get_legend(
  p1 + theme(legend.position = "right", legend.title = element_blank())
)
## Warning in get_plot_component(plot, "guide-box"): Multiple components found;
## returning the first one. To return all, use `return_all = TRUE`.
# Arrange as a 2x2 panel (bottom-left = NPV vs Health)
final_plot <- cowplot::plot_grid(
  p1, legend,
  p2, p3,
  ncol = 2, rel_widths = c(1, 1)
)

final_plot

ggsave("figures/Fig_Pareto.png", final_plot, width = 10, height = 7)

Figure 2. Pairwise comparison of policy outcomes. Each point is a simulation result. Red dots indicate simulations on the Pareto frontier (non-dominated). Panels show trade-offs between Economic Return, Health, and Cost per Student.

While outcomes vary, a subset of efficient policy configurations emerged that balance return on investment, health improvements, and implementation cost.

To better understand what drives the most efficient outcomes, we compared the input variables for simulations on the Pareto frontier (non-dominated in terms of return, health impact, and cost) to those across all simulations.

We compared the mean values of all input variables between the full simulation set and the Pareto-optimal subset. The variables with the greatest deviations help identify factors that characterize efficient policy configurations.

The column Mean_Pareto shows the average value of each input among simulations on the Pareto front. Mean_All shows the average across the full set of model runs. The difference is summarized in Change_Pareto_vs_All. It is the percent change from the average in the full dataset to the average in Pareto-optimal cases. Positive values mean the variable was higher on average in efficient cases, suggesting it’s associated with good performance.

summary_table <- data.frame(
  Mean_All = sapply(simulation_result$x[, input_vars], mean),
  Mean_Pareto = sapply(sim_data[sim_data$on_pareto, input_vars], mean)
)

# Calculate relative difference
summary_table$Change_Pareto_vs_All <- (summary_table$Mean_Pareto - summary_table$Mean_All) / summary_table$Mean_All * 100

# Only the Pareto-optimal subset (those not dominated on all three outcome axes: NPV, health, cost).

summary_table <- summary_table[order(-abs(summary_table$Change_Pareto_vs_All)), ]
knitr::kable(summary_table, digits = 2, caption = "Input Trends in Pareto-Optimal Simulations")
Input Trends in Pareto-Optimal Simulations
Mean_All Mean_Pareto Change_Pareto_vs_All
training_costs_nutrition_annual 5.05 9.56 89.50
baseline_disease_diagnosis 3.46 4.30 24.20
training_costs_physical_activity_annual 3.34 4.06 21.57
monitoring_canteen_cost 1.69 1.99 17.51
n_reduce_disease_treatment 0.34 0.28 -16.00
use_staff_training_nutrition 0.50 0.57 13.19
n_reduce_disease_diagnosis 0.91 1.03 12.68
student_performance_improvement 0.05 0.06 11.03
use_menu_change_rda 0.50 0.55 10.16
value_of_learning_per_student 5.24 5.75 9.71
disease_treatment_cost 0.10 0.09 -9.33
training_costs_foodsafety_annual 3.45 3.76 9.05
children_access_healthy_food 0.09 0.10 8.93
use_staff_training_foodsafety 0.50 0.54 7.72
canteen_selling_unhealthy_foods 0.09 0.10 7.22
unhealthy_schoolgate_food_risk 0.18 0.16 -7.14
physical_activity_effect 0.05 0.06 7.12
resistance_existing_staff_belief 0.09 0.10 7.06
unhealthy_school_gate_foods 0.09 0.08 -5.95
staff_knowledge_food_safety 0.09 0.10 5.78
impact_risk_unhealthy_schoolgate_food 0.09 0.10 5.73
disease_diagnosis_cost 0.50 0.53 5.73
advertisement_exposure 0.05 0.06 5.20
unhealthy_food_exposure 0.05 0.05 -5.08
parents_monitor_school_meal_practices 0.09 0.09 -4.53
costs_exceed_budget 0.09 0.10 4.52
food_access_and_consumption_reduce_overweight 0.05 0.06 4.44
change_menu_costs_annual 8.48 8.86 4.43
health_lessons_class 0.09 0.09 4.18
nutrition_status_bmi_high 0.09 0.09 -4.16
school_meet_mealrequirement 0.09 0.10 3.89
baseline_disease_treatment 1.25 1.30 3.86
food_access_and_consumption_bmi_improve 0.12 0.13 3.67
nutrition_status_bmi_low 0.09 0.09 3.39
discount_rate 8.49 8.20 -3.34
meal_nutrition_practices_staff 0.09 0.09 -3.23
n_student 1493.66 1449.79 -2.94
practice_school_management_board 0.09 0.09 2.92
physical_activity_program_effective 0.40 0.39 -2.80
training_costs_nutrition_1st_year 10.01 10.24 2.35
food_access_and_consumption_reduce_underweight 0.05 0.05 -2.30
peer_influence_factor 0.05 0.05 2.28
CV_value 0.25 0.26 2.16
food_safety_practices_staff 0.09 0.09 2.00
use_physical_activity 0.51 0.50 -1.61
staff_knowledge_nutrition 0.09 0.09 -1.61
use_limit_unhealthy_canteen_food 0.50 0.49 -1.49
teaching_time 0.09 0.09 -1.49
resistance_child_preferences_attitude 0.09 0.09 1.46
resistance_existing_staff_practices 0.09 0.09 1.27
training_costs_physical_activity_1st_year 7.47 7.54 0.99
food_access_and_consumption_threshold 0.65 0.65 0.34
training_costs_foodsafety_1st_year 7.49 7.48 -0.13
unhealthy_canteen_foods 0.05 0.05 -0.07
children_consume_healthy_food 0.09 0.09 -0.06
number_of_years 5.00 5.00 0.00

These top values indicate that Pareto-optimal simulations tend to have much higher nutrition training investments (suggesting this is a key lever for success), higher cost per diagnosis, which may allow more room for cost savings through prevention, more diagnoses prevented, showing effective health outcomes.

Higher spending on staff training — especially for nutrition — appears more often in efficient policy configurations. These costs are higher in Pareto-optimal simulations, suggesting such investments may lead to better economic and health returns.

Many Pareto-optimal scenarios involved combined interventions (e.g., both staff training and menu changes). This suggests that integrated policies—rather than isolated measures—may yield the most efficient outcomes.

Diagnosis cost and reduction in diagnoses are both elevated in the Pareto front. This might reflect scenarios where interventions successfully reduce high-cost health events — meaning more expensive health systems create more room for cost-saving.

Budget exceedance is also slightly higher in Pareto cases. This may reflect that some effective strategies come close to or slightly over budget thresholds but still offer worthwhile returns.

Interpretation caveats

While the Monte Carlo simulation and Pareto analysis identify policy scenarios with favorable outcomes, we found that many input variables exerted weak or inconsistent influence across runs. Only a small number of parameters—such as the number of students, cost of diagnosis, and staff training investments—appeared consistently influential in efficient scenarios.

This suggests that model results are sensitive to the scale of implementation (e.g. school size) and a few high-leverage parameters. Other inputs had relatively limited or noisy influence on results. This highlights the importance of careful parameter validation and the need for further expert engagement or empirical data to refine key estimates.

Overall, this simple model provides a transparent structure for exploring trade-offs, and the number of students emerges as the key scaling driver of outcome magnitude. Future work should prioritize narrowing uncertainty around critical parameters like student population, cost scaling, and implementation efficiency.

This analysis provides insight into how specific school nutrition policy components influence multiple objectives under uncertainty. The approach demonstrates how evidence-based modeling can inform practical decision-making, supporting the design of more effective and efficient interventions.

References

Aroesty, T., S. Arshad, E. Chun, J. Gordon, N. Green, S. Hume, and G. Louis. 2018. “School Meals: Breaking the Cycle of Hunger and Poverty.” In Syst. Inf. Eng. Des. Symp., SIEDS, 100–105. Institute of Electrical; Electronics Engineers Inc. https://doi.org/10.1109/SIEDS.2018.8374717.
Assembly, National. 2019. “Law 43/2019/QH14: Education Law.” http://vanban.chinhphu.vn/default.aspx?pageid=27160&docid=197310.
Castellari, E., and J. P. Berning. 2016. “Can Providing a Morning Healthy Snack Help to Reduce Hunger During School Time? Experimental Evidence Fro an Elementary School in Connecticut.” Appetite 106: 70–77. https://doi.org/10.1016/j.appet.2016.02.157.
Education and Training, Mininstry of. 2022a. “Guidelines for Organizing School Meals in Combination with Promoting Physical Activity for Children and Pupils in Preschool and Primary Education Institutions.” https://moet.gov.vn/giaoducquocdan/giao-duc-the-chat/Pages/Default.aspx?ItemID=8038.
———. 2022b. “Decision No. 4202/QD-BGDĐT 2022 on Enhancing the Capacity of School Healthcare Staff.” https://thuvienphapluat.vn/van-ban/Lao-dong-Tien-luong/Quyet-dinh-4202-QD-BGDDT-2022-boi-duong-nang-cao-nang-luc-nhan-vien-y-te-truong-hoc-547039.aspx.
Grigsby-Duffy, L, R Brooks, T Boelsen-Robinson, MR Blake, K Backholer, C Palermo, and A Peeters. 2022. “The Impact of Primary School Nutrition Policy on the School Food Environment: A Systematic Review.” HEALTH PROMOTION INTERNATIONAL 37 (5). https://doi.org/10.1093/heapro/daac084.
Health, Ministry of. 2019. “Circular No. 31/2019/TT-BYT**: Requirements for Fresh Milk Products Used in the School Milk Program.” https://thuvienphapluat.vn/van-ban/The-thao-Y-te/Thong-tu-31-2019-TT-BYT-yeu-cau-san-pham-sua-tuoi-su-dung-trong-Chuong-trinh-Sua-hoc-duong-430376.aspx.
Hockamp, N., H. Schmitz, T. Lücke, M. Kersting, and K. Sinningen. 2024. “Free Breakfast in Primary Schools: Feasibility of a Municipal Offer in Germany.” Journal of Public Health (Germany). https://doi.org/10.1007/s10389-024-02279-y.
Liou, Y. M., Y.-L. Yang, T.-Y. Wang, and C.-M. Huang. 2015. “School Lunch, Policy, and Environment Are Determinants for Preventing Childhood Obesity: Evidence from a Two-Year Nationwide Prospective Study.” Obesity Research and Clinical Practice 9 (6): 563–72. https://doi.org/10.1016/j.orcp.2015.02.012.
Martinelli, S., T. Bui, F. Acciai, M. J. Yedidia, and P. Ohri-Vachaspati. 2023. “Improvements in School Food Offerings over Time: Variation by School Characteristics.” Nutrients 15 (8). https://doi.org/10.3390/nu15081868.
Minister, Prime. 2016. “Decision No. 1340/QD-TTg of the Prime Minister: Approval of the School Milk Program to Improve the Nutritional Status and Contribute to the Physical Development of Preschool and Primary School Children Until 2020.” http://vanban.chinhphu.vn/default.aspx?pageid=27160&docid=185450.
———. 2019. “Decision No. 41/QD-TTg of the Prime Minister: Approval of the Project "Ensuring Proper Nutrition and Enhancing Physical Activity for Children, Students, and University Students to Improve Health, Prevent Cancer, Cardiovascular Diseases, Diabetes, Chronic Obstructive Pulmonary Disease, and Asthma for the Period 2018 - 2025.".” http://chinhphu.vn/default.aspx?pageid=27160&docid=195881.
———. 2021. “Decision No. 1660/QD-TTg of the Prime Minister: Approval of the School Health Program for the Period 2021-2025.” http://vanban.chinhphu.vn/?pageid=27160&docid=204227&tagid=7&type=1.
———. 2022. “Decision No. 02/QD-TTg of the Prime Minister: Approval of the National Nutrition Strategy for the Period 2021 - 2030, with a Vision Towards 2045.” http://chinhphu.vn/?pageid=27160&docid=204983&tagid=6&type=1.
Ohri-Vachaspati, P., L. Turner, M. A. Adams, M. Bruening, and F. J. Chaloupka. 2016. “School Resources and Engagement in Technical Assistance Programs Is Associated with Higher Prevalence of Salad Bars in Elementary School Lunches in the United States.” Journal of the Academy of Nutrition and Dietetics 116 (3): 417–26. https://doi.org/10.1016/j.jand.2015.10.023.
Ouda, JB, P Mulaudzi, EK Najoli, R Wanyama, and T Runhare. 2019. “An Evaluation of Stakeholder Capacity in the Implementation of Millenium Village Primary School Meal Project.” EVALUATION AND PROGRAM PLANNING 72 (February): 179–87. https://doi.org/10.1016/j.evalprogplan.2018.10.003.
Parnham, JC, K Chang, C Millett, AA Laverty, S von Hinke, J Pearson-Stuttard, F de Vocht, M White, and EP Vamos. 2022. “The Impact of the Universal Infant Free School Meal Policy on Dietary Quality in English and Scottish Primary School Children: Evaluation of a Natural Experiment.” NUTRIENTS 14 (8). https://doi.org/10.3390/nu14081602.
Pongutta, S., O. Ajetunmobi, C. Davey, E. Ferguson, and L. Lin. 2022. “Impacts of School Nutrition Interventions on the Nutritional Status of School-Aged Children in Asia: A Systematic Review and Meta-Analysis.” Nutrients 14 (3). https://doi.org/10.3390/nu14030589.
Pongutta, S, E Ferguson, C Davey, V Tangcharoensathien, S Limwattananon, J Borghi, C Wong, and L Lin. 2023. “The Impact of a Complex School Nutrition Intervention on Double Burden of Malnutrition Among Thai Primary School Children: A 2-Year Quasi-Experiment.” PUBLIC HEALTH 224 (November): 51–57. https://doi.org/10.1016/j.puhe.2023.08.023.
Steyn, NP, A de Villiers, N Gwebushe, CE Draper, J Hill, M de Waal, L Dalais, Z Abrahams, C Lombard, and EV Lambert. 2015. “Did HealthKick, a Randomised Controlled Trial Primary School Nutrition Intervention Improve Dietary Quality of Children in Low-Income Settings in South Africa?” BMC PUBLIC HEALTH 15 (September). https://doi.org/10.1186/s12889-015-2282-4.
Taylor, J. P., D. MacLellan, J. M. Caiger, K. Hernandez, M. McKenna, B. Gray, and P. Veugelers. 2011. “Implementing Elementary School Nutrition Policy: Principals’ Perspectives.” Canadian Journal of Dietetic Practice and Research 72 (4): e205–11. https://doi.org/10.3148/72.4.2011.e205.
Trung Le, D. S. N. 2012. “School Meal Program in Ho Chi Minh City, Vietnam: Reality and Future Plan.” Asia Pacific Journal of Clinical Nutrition 21 (1): 139–43. https://www.scopus.com/inward/record.uri?eid=2-s2.0-84860346331&partnerID=40&md5=46c7821c4cc73314d9044809bca42406.
Walton, M., L. Signal, and G. Thomson. 2013. “Public Policy to Promote Healthy Nutrition in Schools: Views of Policymakers.” Health Education Journal 72 (3): 283–91. https://doi.org/10.1177/0017896912442950.
Woo, T. 2015. “The School Meal System and School-Based Nutrition Education in Korea.” Journal of Nutritional Science and Vitaminology 61: S23–24. https://doi.org/10.3177/jnsv.61.S23.
Wu, TF, LA Macaskill, MI Salvadori, and PDN Dworatzek. 2015. “Is the Balanced School Day Truly Balanced? A Review of the Impacts on Children, Families, and School Food Environments.” JOURNAL OF SCHOOL HEALTH 85 (6): 405–10. https://doi.org/10.1111/josh.12265.